package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;

import javax.validation.constraints.NotNull;

import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.M_ID_NOT_NULL;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.VxCheckFaceExample.E_APPID;
import static org.jsola.hr.example.VxCheckFaceExample.E_AUTHENTICATE_FAILED_REASON;
import static org.jsola.hr.example.VxCheckFaceExample.E_AUTHENTICATE_SCENE;
import static org.jsola.hr.example.VxCheckFaceExample.E_AUTHENTICATE_SOURCE;
import static org.jsola.hr.example.VxCheckFaceExample.E_AUTHENTICATE_STATE;
import static org.jsola.hr.example.VxCheckFaceExample.E_AUTHENTICATE_TIME;
import static org.jsola.hr.example.VxCheckFaceExample.E_EMPLOYER_NAME;
import static org.jsola.hr.example.VxCheckFaceExample.E_EMPLOYMENT_TYPE;
import static org.jsola.hr.example.VxCheckFaceExample.E_ID_CARD_NUMBER;
import static org.jsola.hr.example.VxCheckFaceExample.E_MCHID;
import static org.jsola.hr.example.VxCheckFaceExample.E_OPENID;
import static org.jsola.hr.example.VxCheckFaceExample.E_PROJECT_NAME;
import static org.jsola.hr.example.VxCheckFaceExample.E_SUB_MCHID;
import static org.jsola.hr.example.VxCheckFaceExample.E_TOKEN;
import static org.jsola.hr.example.VxCheckFaceExample.E_USER_ID;
import static org.jsola.hr.example.VxCheckFaceExample.E_USER_NAME;
import static org.jsola.hr.example.VxCheckFaceExample.M_APPID_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_AUTHENTICATE_FAILED_REASON_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_AUTHENTICATE_SCENE_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_AUTHENTICATE_SOURCE_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_AUTHENTICATE_STATE_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_AUTHENTICATE_TIME_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_EMPLOYER_NAME_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_EMPLOYMENT_TYPE_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_ID_CARD_NUMBER_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_MCHID_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_OPENID_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_PROJECT_NAME_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_SUB_MCHID_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_TOKEN_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_USER_ID_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.M_USER_NAME_MAX;
import static org.jsola.hr.example.VxCheckFaceExample.N_APPID;
import static org.jsola.hr.example.VxCheckFaceExample.N_AUTHENTICATE_FAILED_REASON;
import static org.jsola.hr.example.VxCheckFaceExample.N_AUTHENTICATE_SCENE;
import static org.jsola.hr.example.VxCheckFaceExample.N_AUTHENTICATE_SOURCE;
import static org.jsola.hr.example.VxCheckFaceExample.N_AUTHENTICATE_STATE;
import static org.jsola.hr.example.VxCheckFaceExample.N_AUTHENTICATE_TIME;
import static org.jsola.hr.example.VxCheckFaceExample.N_EMPLOYER_NAME;
import static org.jsola.hr.example.VxCheckFaceExample.N_EMPLOYMENT_TYPE;
import static org.jsola.hr.example.VxCheckFaceExample.N_ID_CARD_NUMBER;
import static org.jsola.hr.example.VxCheckFaceExample.N_MCHID;
import static org.jsola.hr.example.VxCheckFaceExample.N_OPENID;
import static org.jsola.hr.example.VxCheckFaceExample.N_PROJECT_NAME;
import static org.jsola.hr.example.VxCheckFaceExample.N_SUB_MCHID;
import static org.jsola.hr.example.VxCheckFaceExample.N_TOKEN;
import static org.jsola.hr.example.VxCheckFaceExample.N_USER_ID;
import static org.jsola.hr.example.VxCheckFaceExample.N_USER_NAME;

/**
 * 微信人脸核身
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "修改【微信人脸核身】的参数")
@Data
public class VxCheckFaceUpdateDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID, required = true)
    @NotNull(message = M_ID_NOT_NULL)
    private String id;

    @ApiModelProperty(notes = N_USER_ID, example = E_USER_ID)
    @Length(max = 32, message = M_USER_ID_MAX)
    private String userId;

    @ApiModelProperty(notes = N_OPENID, example = E_OPENID)
    @Length(max = 64, message = M_OPENID_MAX)
    private String openid;

    @ApiModelProperty(notes = N_APPID, example = E_APPID)
    @Length(max = 32, message = M_APPID_MAX)
    private String appid;

    @ApiModelProperty(notes = N_MCHID, example = E_MCHID)
    @Length(max = 32, message = M_MCHID_MAX)
    private String mchid;

    @ApiModelProperty(notes = N_SUB_MCHID, example = E_SUB_MCHID)
    @Length(max = 32, message = M_SUB_MCHID_MAX)
    private String subMchid;

    @ApiModelProperty(notes = N_PROJECT_NAME, example = E_PROJECT_NAME)
    @Length(max = 12, message = M_PROJECT_NAME_MAX)
    private String projectName;

    @ApiModelProperty(notes = N_EMPLOYER_NAME, example = E_EMPLOYER_NAME)
    @Length(max = 12, message = M_EMPLOYER_NAME_MAX)
    private String employerName;

    @ApiModelProperty(notes = N_USER_NAME, example = E_USER_NAME)
    @Length(max = 1024, message = M_USER_NAME_MAX)
    private String userName;

    @ApiModelProperty(notes = N_ID_CARD_NUMBER, example = E_ID_CARD_NUMBER)
    @Length(max = 1024, message = M_ID_CARD_NUMBER_MAX)
    private String idCardNumber;

    @ApiModelProperty(notes = N_EMPLOYMENT_TYPE, example = E_EMPLOYMENT_TYPE)
    @Length(max = 32, message = M_EMPLOYMENT_TYPE_MAX)
    private String employmentType;

    @ApiModelProperty(notes = N_TOKEN, example = E_TOKEN)
    @Length(max = 1024, message = M_TOKEN_MAX)
    private String token;

    @ApiModelProperty(notes = N_AUTHENTICATE_SCENE, example = E_AUTHENTICATE_SCENE)
    @Length(max = 16, message = M_AUTHENTICATE_SCENE_MAX)
    private String authenticateScene;

    @ApiModelProperty(notes = N_AUTHENTICATE_SOURCE, example = E_AUTHENTICATE_SOURCE)
    @Length(max = 64, message = M_AUTHENTICATE_SOURCE_MAX)
    private String authenticateSource;

    @ApiModelProperty(notes = N_AUTHENTICATE_STATE, example = E_AUTHENTICATE_STATE)
    @Length(max = 32, message = M_AUTHENTICATE_STATE_MAX)
    private String authenticateState;

    @ApiModelProperty(notes = N_AUTHENTICATE_TIME, example = E_AUTHENTICATE_TIME)
    @Length(max = 32, message = M_AUTHENTICATE_TIME_MAX)
    private String authenticateTime;

    @ApiModelProperty(notes = N_AUTHENTICATE_FAILED_REASON, example = E_AUTHENTICATE_FAILED_REASON)
    @Length(max = 128, message = M_AUTHENTICATE_FAILED_REASON_MAX)
    private String authenticateFailedReason;


}

